/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jerarquia;

import java.util.ArrayList;
import java.util.LinkedList;

/**
 *
 * @author Alvaro
 */
public class nodo_arbol {
    public String nombre_nodo;
    public boolean estado;
    public boolean dimencion_activa;
    public LinkedList<nodo_arbol> lista_hijos;
    public ArrayList campos;
    
    public nodo_arbol(){
        nombre_nodo=null;
        lista_hijos=null;
        dimencion_activa=false;
    }
    
    public nodo_arbol(String nombre,ArrayList lst){
        nombre_nodo=nombre;
        lista_hijos=new LinkedList<nodo_arbol>();
        estado=false;
        dimencion_activa=false;
        campos=lst;
    }
    
    public void activar_dimencion(){
        this.dimencion_activa=true;
    }
    
    public void desacticar_dimencion(){
        this.dimencion_activa=false;
    }
    
    
    public void add_hijo(nodo_arbol hijo){
        lista_hijos.add(hijo);
    }
    
    public String  imprimir_hijos(){
        String cad="";
        for(int i=0;i<lista_hijos.size()-1;i++){
            cad+="->"+lista_hijos.get(i).nombre_nodo;
        }
        
        return cad;
    }
    
    
    public String  imprimir_hijos2(){
        String cad="";
        for(int i=0;i<lista_hijos.size();i++){
            cad+="->"+lista_hijos.get(i).nombre_nodo;
        }
        
        return cad;
    }
    
    
    public nodo_arbol buscar_jerarquia(String nombre){
        int i=0;
        while(i<lista_hijos.size()-1){
            if(lista_hijos.get(i).nombre_nodo.equals(nombre)){
               return lista_hijos.get(i); 
            }
            else{
                i++;
            }
                
        }
        return null;
    }
    
    
    public void habilitar_dimencion(String nombre,boolean valor){
        if(this.nombre_nodo.equals(nombre)){
            this.estado=true;
        }
        else
        if(this.lista_hijos.size()>0){
            for(int i=0;i<this.lista_hijos.size()-1;i++){
            this.lista_hijos.get(i).habilitar_dimencion(nombre,valor);
        }
            
        }
    }
    
    
    public void visibilidad_campo(String nom_tabla, String nom_campo,String val){
        if(nombre_nodo.equals(nom_tabla)){
            int i=0;
            boolean encontrado=false;
            
            while(i<campos.size() && encontrado!=true){
                String [] aux=(String [])campos.get(i);
                if(aux[1].equals(nom_campo)){
                    aux[3]=val;
                    encontrado=true;
                }
                i++;
            }
        }
        else{
             for( nodo_arbol campo : lista_hijos ){
                 campo.visibilidad_campo(nom_tabla, nom_campo, val);
        }
        }
    }
    
}
